package com.tedu.review.day02;

/**
 * 类的创建过程(JVM虚拟机--内存创建流程:找  堆  方法区
 * 1 从程序入口 加载xxx.class文件,类对象存到方法区当中【方法区  并行】
 * 2  如果发现  加载xxx.class文件中.存在static静态块  存入方法区  创建对象之前提前调用
 * 3 发现cs 引用:将这个引用转换为地址值:0*000,存入栈内存
 * 4  发现new  对象()  在堆内存中    给对象申请【随意】空间
 * 5.类创建【实例化】执行步骤   先执行方法区,静态块-->执行普通块代码-->初始化
 * 6.给栈中生成的地址值进行指向,域内存内随意开辟空间（初始值） 【与栈内存地址一致】
 * 7.给栈中生成的地址值进行指向,域内存中随意开辟空间(赋值)【与栈内存地址一致】
 *
 *
 * 通用过程:
 * 1 栈  编译器自动分配  使用完毕自动释放
 * 2 堆  一般由程序员分配释放  若程序员没有释放  java程序自动进行垃圾回收
 *                                       Gc
 *3  全局区(静态区):全局变量和静态变量在内存中存在一起的
 *                初始化的全局变量和静态变量存在一起的
 *                未初始化的全局变量和未初始化的静态变量在相邻的另一块区域
 *                ---程序一旦结束  就自动释放
 * 4  常量值:存在方法区中--程序结束  释放【JavaAPI  字符串】
 *
 *
 *
 *
 *
 *
 *
 *
 */

public class 类的创建过程 {
    public static void main(String[]args){
        /*完成一次创建对象*/


        CountrySide cs=new CountrySide();
        /*方法区     引用--存钱内存        堆内存 new产生对象*/
    }
}
/*测试类   类创建过程       一个.java文件创建两个类*/
class   CountrySide{
    /*代码类*/
    {
        System.out.println("请问厕所在哪：张超");
    }
    /*静态代码块*/
    static{
        System.out.println("别管了");
    }
    /*1成员遍历  变量,类中存在变量就是成员变量:可以由修饰符修饰*/
    private  String name="张超";
    private int age=56;
    /*2构造器|构造方法|句柄:创建对象初始化*/
    public CountrySide(){
        name="张超";
        System.out.println(name+"这车能看不能摸,但是可以往外说");

    }
}
